5
תגובות
נתקלתי בשאלה חדשה - נניח יש לי מודל שמתעסק עם הטבלה של המשתמשים ואני רוצה לשלוף מספר משתמשים לפי איידי.
אז עשיתי את הפונקציה הבאה:
public static function findUsersById($userIds)
    {
        return self::model()->findAllByPk($userIds);
    }

מצד שני, במקום לקרוא לפונקציה מחוץ למודל, אני יכול פשוט לעשות כך:
Users::model()->findAllByPk($userIds);


אז השאלה מה עדיף ומומלץ לעשות?
ובמקרה שאני משתמש בפונקציה רק פעם אחת, האם עדיף לעשות את הקוד השני שרשמתי?

5 תשובות

avatar ענה Splash ב 05 לאוגוסט 2014 #

לכתוב מתודה סטטית שהמטרה שלה זה לקרוא למתודה סטטית אחרת זה מאוד מיותר,עדיף שתכתוב את זה פשוט בקונטרולר.

avatar ענה intval ב 05 לאוגוסט 2014 #

אני מעדיף את גרסת ה-

Users::model()->findAllByPk($userIds);

avatar ענה hebrewUrls ב 06 לאוגוסט 2014 #

ויש מקרים שבהם עדיף ליצור מתודה במודל או שעדיף לא לעשות את זה בכלל?
לדוגמה, כשמדובר בשאילתה ארוכה? או כשאני משתמש באותה מתודה במספר מקומות שונים?

avatar ענה Splash ב 06 לאוגוסט 2014 #

אם מדובר בשאילתה ממש מורכבת שאתה משתמש בא כמה פעמים ואולי תרצה לשנות אותה בעתיד אז כן,אבל כל עוד מה שהמתודה עושה זה לקרוא למתודה אחרת זה מאוד מיותר זה כמו לכתוב פונקציה לחיבור במקום לעשות 1+1.

avatar ענה intval ב 07 לאוגוסט 2014 #

אם יש לך שאילתה מורכבת אתה בדרך כלל תרצה להפוך אותה ל named scope ואז להשתמש בו במקומות אחרים.
באופן כללי, אם המתודה שלך עושה משהו מעבר למה שהמתודה הקיימת עושה - אתה יכול ליצור אותה, אך אם היא לא עושה שום דבר חדש ומועיל - תשלמש בזאת שכבר קיימת.